home *** CD-ROM | disk | FTP | other *** search
- //: C20:RawStorageIterator.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Demonstrate the raw_storage_iterator
- #include "Noisy.h"
- #include <iostream>
- #include <iterator>
- #include <algorithm>
- using namespace std;
-
- int main() {
- const int quantity = 10;
- // Create raw storage and cast to desired type:
- Noisy* np =
- (Noisy*)new char[quantity * sizeof(Noisy)];
- raw_storage_iterator<Noisy*, Noisy> rsi(np);
- for(int i = 0; i < quantity; i++)
- *rsi++ = Noisy(); // Place objects in storage
- cout << endl;
- copy(np, np + quantity,
- ostream_iterator<Noisy>(cout, " "));
- cout << endl;
- // Explicit destructor call for cleanup:
- for(int j = 0; j < quantity; j++)
- (&np[j])->~Noisy();
- // Release raw storage:
- delete (char*)np;
- } ///:~
-